package com.ruoyi.project.report.revenue.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.project.report.revenue.domain.Revenue;
import com.ruoyi.project.report.revenue.mapper.RevenueMapper;
import com.ruoyi.project.report.revenue.service.IRevenueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class RevenueServiceImpl implements IRevenueService {

    @Autowired
    private RevenueMapper revenueMapper;

    /**
     * 查询营收报表
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param dateFlag 日期格式查询：0 按周， 1 按月， 2 按年，3 按天
     * @return 客户管理
     */
    @Override
    public List<Revenue> selectRevenueByDate(String startDate, String endDate, int dateFlag) {
        // 0 按周， 1 按月， 2 按年，3 按天
        String dateFormat;
        String dateFormatCn;
        if (dateFlag == 0) {
            dateFormat = "%Y-%u";
            dateFormatCn = "%Y年 第%u周";
        } else if (dateFlag == 1) {
            dateFormat = "%Y-%m";
            dateFormatCn = "%Y年 %m月";
        } else if (dateFlag == 3) {
            dateFormat = "%Y-%m-%d";
            dateFormatCn = "%Y年 %m月%d日";
        } else {
            dateFormat = "%Y";
            dateFormatCn = "%Y年";
        }

        return revenueMapper.selectRevenueByDate(startDate, endDate, dateFormat, dateFormatCn);
    }

    /**
     * 查询本月总收入
     *
     * @return 收入
     */
    @Override
    public Long selectThisMonthIncome() {
        String monthFirstStr = DateUtils.getMonthFirstDay();
        String monthLastStr = DateUtils.getMonthLastDay();
        return revenueMapper.selectIncome(monthFirstStr, monthLastStr);
    }

    /**
     * 查询总收入
     *
     * @return 收入
     */
    @Override
    public Long selectAllIncome() {
        return revenueMapper.selectAllIncome();
    }

    /**
     * 查询本月总收入详情  年-月-日 金额
     *
     * @return 收入详情
     */
    @Override
    public List<Revenue> selectThisMonthIncomeInfo() {
        String monthFirstStr = DateUtils.getMonthFirstDay();
        String monthLastStr = DateUtils.getMonthLastDay();
        Long days = DateUtils.getDateGapDays(DateUtils.parseDate(monthLastStr), DateUtils.parseDate(monthFirstStr));
        return revenueMapper.selectThisMonthIncomeInfo(monthFirstStr, monthLastStr, days);
    }
}
